/*
    1. 访问根实例
       在每个new Vue实例的子组件中，都可以通过$root属性访问其根实例
       this.$root.foo // 访问根组件的数据

    2. 访问父组件的实例（this.$parent)


    3. 访问子组件实例或子元素
          vm.$refs: 一个对象，持有已注册过ref的所有子组件

          // ref属性为子组件赋予一个ID引用， this.$refs.usernameInput表示该子组件实例，然后可以在父组件的JS代码中操作
          <base-input ref="usernameInput"></base-input>

          当ref与 v-for一起使用的时候，得到的$refs会是一个包含对应数据源的这些子组件的数组
          $refs只会在组件渲染完成后生效，并且它们不是响应式的。所以应该避免在模板或计算属性中访问$refs


    4. 依赖注入
          当组件嵌套过多时，而且很多子组件都需要用到根组件的某一些内容时（数据或方法），使用依赖注入会比普通的传值更加方便
          provide选项允许我们指定想要提供给后代组件的数据/方法
              provide: function () {
                return {
                  getMap: this.getMap
                }
              }

          在任何后代组件实例里，可以通过inject选项指定接收需要的属性
              inject: ['getMap']

*/